package my.learnDB.sdjpa.domain;

import lombok.Data;
import lombok.NoArgsConstructor;
import org.hibernate.annotations.GenericGenerator;

import javax.persistence.*;
import java.io.Serializable;

@Data
@Entity
@Table(name = "user")
@NoArgsConstructor
public class User implements Serializable {

    /**
     * GenerationType.
     *  IDENTITY: 自增 MySQL
     *  SEQUENCE: 序列 Oracle
     *  TABLE: JPA提供的一种机制，通过一张数据库表的形式帮助我们完成主键自增
     *  AUTO: 自动
     */

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)  // 指定主键的生成策略
    @GenericGenerator(name="increment", strategy = "increment")
    private Integer id;

    /**
     * column的属性：
     *  name： 指定数据库表名称
     *  unique： 是否唯一
     *  nullable： 是否可以为空
     *  insertable: 是否可以插入数据
     *  updateable：是否可以更新
     *  columnDefinition: 定义表时创建此列的DLL
     *  secondaryTable: 从表名。如果此列不建立在主表上，该属性定义该列所在从表的名字搭建开发环境
     */
    @Column(name = "username")
    private String name;  // 数据库 username

    @Column(name = "sex")
    private String gender;  // 数据库 sex

    @Column(name = "password")
    private String pwd;  // 数据库 password

//    @OneToMany(mappedBy = "Users")  // 为本类在另一方的字段名,一对多
//    private List<Account> accounts = new ArrayList<>();


    public User(String name, String gender, String password) {
        this.name = name;
        this.gender = gender;
        this.pwd = password;
    }

    @Override
    public String toString() {
        return "my.learnDB.jpa.domain.User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                '}';
    }
}
